package com.demo.java.OD101_150.OD127;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【找字符】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145724074
 */
public class OdMain {
    public static void main(String[] args) {
        try {
            Scanner scan = new Scanner(System.in);
            String firstStr = scan.nextLine();  // 读取第一个字符串
            String secondStr = scan.nextLine();  // 读取第二个字符串
            // 输入长度验证
            if (firstStr == null || firstStr.length() > 1024) {
                System.out.println("input error");
                return;
            }
            if (secondStr == null || secondStr.length() > 100) {
                System.out.println("input error");
                return;
            }

            // 将第一个字符串转化为字符数组，并按ASCII顺序排序
            char[] firstChars = firstStr.toCharArray();
            Arrays.sort(firstChars);

            // 创建一个集合来存储第二个字符串中的字符
            char[] secondChars = secondStr.toCharArray();
            Set<Character> mySet = new HashSet<>();
            for (char c : secondChars) {
                mySet.add(c);  // 将第二个字符串中的字符加入集合
            }

            // 使用TreeSet来存储符合条件的字符，这样它们会自动按ASCII排序
            Set<Character> resultSet = new TreeSet<>();
            for (char c : firstChars) {
                if (mySet.contains(c)) {  // 如果字符在第二个字符串中存在
                    resultSet.add(c);  // 加入结果集合
                }
            }

            // 输出排序后的字符
            for (Character c : resultSet) {
                System.out.print(c);
            }
            System.out.println();  // 输出完毕后换行
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("input error");
        }
    }
}